package cn.highedu.coolsharkhub.controller;

import cn.highedu.coolsharkhub.pojo.dto.BannerDTO;
import cn.highedu.coolsharkhub.pojo.vo.BannerVO;
import cn.highedu.coolsharkhub.service.BannerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 轮播图控制层
 * 用于处理轮播图相关请求
 * @author HighEDU
 */
@RestController
public class BannerController {
    private Logger logger = LoggerFactory.getLogger(BannerController.class);

    @Autowired
    private BannerService bannerService;

    /**
     * 查询所有轮播图
     * @return 所有轮播图JSON数据
     */
    @GetMapping("/api/banners")
    public List<BannerVO> findAll() {
        logger.info("查询所有轮播图");
        return bannerService.findAll();
    }

    /**
     * 删除轮播图
     * @param id 轮播图id
     */
    @DeleteMapping("/api/banners/{id}")
    @ResponseStatus(HttpStatus.NO_CONTENT) // 204
    public void deleteById(@PathVariable Integer id) {
        logger.info("删除轮播图");
        bannerService.deleteById(id);
    }

    /**
     * 保存轮播图
     * @param bannerDTO 轮播图
     *                     必须的参数
     *                     异常已经全局处理
     * @return 保存结果
     */
    @PostMapping("/api/banners")
    @ResponseStatus(HttpStatus.CREATED) // 201
    public String addBanner(@RequestBody BannerDTO bannerDTO) {
        logger.info("保存轮播图");
        bannerService.addBanner(bannerDTO);
        return "保存成功";
    }

    /**
     * 根据id更新轮播图
     * @param id 轮播图id
     * @param bannerDTO 轮播图
     *                  必须的参数
     * @return 更新结果
     */
    @PutMapping("/api/banners/{id}")
    @ResponseStatus(HttpStatus.NO_CONTENT) // 204
    public String updateById(@PathVariable Integer id, @RequestBody BannerDTO bannerDTO) {
        logger.info("更新轮播图");
        bannerService.updateById(id, bannerDTO);
        return "更新成功";
    }

}
